package com.example.warehouse_management.service.impl;

import com.example.warehouse_management.entity.User;
import com.example.warehouse_management.mapper.UserMapper;
import com.example.warehouse_management.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

/**
 * 用户业务层接口实现类
 * 实现UserService接口中定义的用户相关业务逻辑，作为控制器与数据访问层之间的业务处理中间层
 */
@Service // 标识为Spring业务层组件，由Spring容器管理，可被控制器注入使用
public class UserServiceImpl implements UserService {

    /**
     * 注入用户数据访问层接口实例
     * 通过Spring自动装配，获取UserMapper的实现类（MyBatis动态代理生成），用于执行数据库操作
     */
    @Autowired
    private UserMapper userMapper;

    /**
     * 实现根据用户账号查询用户信息的业务方法
     * 调用数据访问层的查询方法，获取用户数据，封装用户查询的业务逻辑
     *
     * @param userCode 用户账号（业务系统中唯一标识用户的账号，如登录名、工号等）
     * @return User实体对象：包含用户的完整信息（如用户ID、账号、密码、姓名、状态等）；
     *         若未查询到对应账号的用户（或账号已被删除），则返回null
     * @note 本实现直接调用数据访问层方法，若后续需要添加业务逻辑（如缓存查询结果、权限过滤等），
     *       可在此方法中扩展（例如先查Redis缓存，缓存未命中再查数据库）
     */
    @Override
    public User queryUserByCode(String userCode) {
        // 调用UserMapper的findUserByCode方法，从数据库查询指定账号的用户信息
        // 数据访问层已处理逻辑删除（is_delete=0），此处直接返回查询结果
        return userMapper.findUserByCode(userCode);
    }
}